package com.zjsru.oneDay;

/**
 * @Author: likew
 * @Date: 2022/2/24
 * <p>
 * 球会落何处
 * <p>
 * 输入：grid = [[1,1,1,-1,-1],[1,1,1,-1,-1],[-1,-1,-1,1,1],[1,1,1,1,-1],[-1,-1,-1,-1,-1]]
 * 输出：[1,-1,-1,-1,-1]
 * 解释：示例如图：
 * b0 球开始放在第 0 列上，最终从箱子底部第 1 列掉出。
 * b1 球开始放在第 1 列上，会卡在第 2、3 列和第 1 行之间的 "V" 形里。
 * b2 球开始放在第 2 列上，会卡在第 2、3 列和第 0 行之间的 "V" 形里。
 * b3 球开始放在第 3 列上，会卡在第 2、3 列和第 0 行之间的 "V" 形里。
 * b4 球开始放在第 4 列上，会卡在第 2、3 列和第 1 行之间的 "V" 形里。
 */
public class findBall {
    int m, n;
    int[][] g;

    public int[] findBall(int[][] grid) {
        g = grid;
        m = g.length;
        n = g[0].length;
        int[] ans = new int[n];
        for (int i = 0; i < n; i++) {
            ans[i] = getVal(i);
        }
        return ans;
    }

    private int getVal(int x) {
        int r = 0, c = x;
        while (r < m) {
            int ne = c + g[r][c];
            if (ne < 0 || ne >= n) return -1;
            if (g[r][c] != g[r][ne]) return -1;
            r++;
            c = ne;
        }
        return c;
    }

    public static void main(String[] args) {
        findBall findBall = new findBall();
        int[][] grid = new int[][]{{1, 1, 1, -1, -1}, {1, 1, 1, -1, -1}, {-1, -1, -1, 1, 1}, {1, 1, 1, 1, -1}, {-1, -1, -1, -1, -1}};
        System.out.println(findBall.findBall(grid));
    }
}
